package cn.lovemmd.model.admin.entity;

import com.baomidou.mybatisplus.annotation.*;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 模型实体类
 * 
 * @author TLS
 * @since 2024-01-01
 */
@TableName("model_list")
public class Model implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 模型ID
     */
    @TableId(value = "m_id", type = IdType.AUTO)
    private Long mId;

    /**
     * 模型名称
     */
    @TableField("m_name")
    private String mName;

    /**
     * 模型职业
     */
    @TableField("m_occupation")
    private String mOccupation;

    /**
     * 模型下载链接
     */
    @TableField("m_url")
    private String mUrl;

    /**
     * 模型图片链接
     */
    @TableField("m_img")
    private String mImg;

    /**
     * 模型来源
     */
    @TableField("m_model_source")
    private String mModelSource;

    /**
     * 骨骼绑定
     */
    @TableField("m_bone_binding")
    private String mBoneBinding;

    /**
     * 物理绑定
     */
    @TableField("m_physics_binding")
    private String mPhysicsBinding;

    /**
     * 表情制作
     */
    @TableField("m_expression_making")
    private String mExpressionMaking;

    /**
     * 创建时间
     */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

    /**
     * 逻辑删除标识（0：未删除，1：已删除）
     */
    @TableLogic
    @TableField("deleted")
    private Integer deleted;

    /**
     * 版本号（乐观锁）
     */
    @Version
    @TableField("version")
    private Integer version;

    // 无参构造函数
    public Model() {}

    // 全参构造函数
    public Model(Long mId, String mName, String mOccupation, String mUrl, String mImg, 
                 String mModelSource, String mBoneBinding, String mPhysicsBinding, String mExpressionMaking,
                 LocalDateTime createTime, LocalDateTime updateTime, Integer deleted, Integer version) {
        this.mId = mId;
        this.mName = mName;
        this.mOccupation = mOccupation;
        this.mUrl = mUrl;
        this.mImg = mImg;
        this.mModelSource = mModelSource;
        this.mBoneBinding = mBoneBinding;
        this.mPhysicsBinding = mPhysicsBinding;
        this.mExpressionMaking = mExpressionMaking;
        this.createTime = createTime;
        this.updateTime = updateTime;
        this.deleted = deleted;
        this.version = version;
    }

    // Getter 和 Setter 方法
    public Long getMId() {
        return mId;
    }

    public void setMId(Long mId) {
        this.mId = mId;
    }

    public String getMName() {
        return mName;
    }

    public void setMName(String mName) {
        this.mName = mName;
    }

    public String getMOccupation() {
        return mOccupation;
    }

    public void setMOccupation(String mOccupation) {
        this.mOccupation = mOccupation;
    }

    public String getMUrl() {
        return mUrl;
    }

    public void setMUrl(String mUrl) {
        this.mUrl = mUrl;
    }

    public String getMImg() {
        return mImg;
    }

    public void setMImg(String mImg) {
        this.mImg = mImg;
    }

    public String getMModelSource() {
        return mModelSource;
    }

    public void setMModelSource(String mModelSource) {
        this.mModelSource = mModelSource;
    }

    public String getMBoneBinding() {
        return mBoneBinding;
    }

    public void setMBoneBinding(String mBoneBinding) {
        this.mBoneBinding = mBoneBinding;
    }

    public String getMPhysicsBinding() {
        return mPhysicsBinding;
    }

    public void setMPhysicsBinding(String mPhysicsBinding) {
        this.mPhysicsBinding = mPhysicsBinding;
    }

    public String getMExpressionMaking() {
        return mExpressionMaking;
    }

    public void setMExpressionMaking(String mExpressionMaking) {
        this.mExpressionMaking = mExpressionMaking;
    }

    public LocalDateTime getCreateTime() {
        return createTime;
    }

    public void setCreateTime(LocalDateTime createTime) {
        this.createTime = createTime;
    }

    public LocalDateTime getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(LocalDateTime updateTime) {
        this.updateTime = updateTime;
    }

    public Integer getDeleted() {
        return deleted;
    }

    public void setDeleted(Integer deleted) {
        this.deleted = deleted;
    }

    public Integer getVersion() {
        return version;
    }

    public void setVersion(Integer version) {
        this.version = version;
    }
}
